package org.itsky.hystrix;

import com.netflix.hystrix.HystrixCommand;
import org.springframework.web.client.RestTemplate;

/**
 * @Author sky
 * @Site cmtianxie163.com 2020/4/8 10:00
 */
public class HelloCommand extends HystrixCommand<String> {

    RestTemplate restTemplate;

    public HelloCommand(Setter setter,RestTemplate restTemplate) {
        super(setter);
        this.restTemplate = restTemplate;
    }

    @Override
    protected String run() throws Exception {
        return restTemplate.getForObject("http://provider/hello",String.class);
    }

    /**
     * 这个方法就是请求失败的回调 实现了服务降级
     * @return
     */
    @Override
    protected String getFallback() {
        return "error-extends";

        /**
         * 如果消费者中发生了异常 可以通过如下方法 获取异常信息
         *
         */
//        return "error-extends" + getExecutionException().getMessage();
    }
}
